Mining Process: Machine Learning and Analysis

本專案為個人嘗試針對製造產業資料進行機器學習建模與預測,採用資料為礦業精煉過程中的泡沫浮選設備的輸入與產出
其中的"%Iron Concentrate" 與 "% Silica Concentrate" 等兩種類型數值產出為此過程的最終成果,前者越高對產出品質越佳,後者反之
相關情境目標是希望能挑選並建立合適的模型來解釋本資料的輸入與對應產出(減低二氧化矽產出),同時進行模型的初步優化
以期未來能達到同步接受資料的input下,動態調整其他可控變數,優化最終成果

資料來源: https://www.kaggle.com/datasets/edumagalhaes/quality-prediction-in-a-mining-process

Import Library & Dataset

EDA

基本上每20s會有一筆資料,無法確認缺少record的時間點對產出相關是否有影響
根據相關領域知識所知,大概10分鐘左右可以完成製程,在此暫時假定無時間位移對產出的影響

Modelling

根據本資料的問題情境,"%Iron Concentrate" 與 "% Silica Concentrate" 兩者皆為泡沫浮選法的產出,前者追求的是越高越好,後者追求的是越低越好
在本情境中目標是要能降低二氧化矽的百分比,以下將做為主要目標挑選合適的模型

Model Baseline

採用LightGBMRegressor作為起始點參考,資料集切分採用7:3,屬於輕量的模型可以較快看到初步結果

Other model

嘗試比較其他model,在不特意進行參數調整下是否有比較優秀的選擇
以下參考Linear、Ensemble model list...

對於預測目標而言,表現能力不錯的模型為DecisionTreeRegressor, R2 = 0.8928, rmse = 0.3681
而基本參照的LGBMRegressor的解釋能力達 R2 = 0.6019, rmse = 0.7094
DecisionTree解釋性高但是依據上述成果看來有overfit的問題存在,而大部分問題會出在深度
所以必須先就其幾個基本的參數先限制住,後續再透過參數優化的方式找到最佳模型

根據以上結果推估max_depth不應超過20層,解釋能力落在82%左右
接下來會先著重在對"% Silica Concentrate"模型相關的解釋

Explanation

在模型解釋部分,這邊選用SHAP的模組來檢視
SHAP在模型解釋上參考了賽局理論,視個別特徵交互競爭,以此比較出對於產出有最大貢獻者來說明
詳細的SHAP模組請自行參照相關論文與介紹,在此不特別敘述

Explanation for model

接下來我們從驗證的資料中抽取1000個樣本作為計算shap value的輸入
shap在模型解釋上是將各特徵作為競爭的參考,特徵對於產出的貢獻度越大其shap value越高

特徵重要性前三名為Flotation Column 03 Air Flow, Amina Flow, % Silica Feed
Flotation Column 03 Air Flow 影響最大,顏色代表的是該特徵的值高低,而在x軸上的分布是計算出來的SHAP值,兩端點代表的是對模型的影響力
初步可以解讀成隨著其Air Flow的增強其目標產出的降低,對於欲降低% Silica Concentrate 此目標而言是有用的
Amina Flow反之,是在越多時會強化% Silica Concentrate的產出

以上使用SHAP的PDP來看該特徵與其他交互項的關係,我們就單挑前三個影響力度較大的特徵來檢視其交互作用,大概可以看出一些關係:

Explanation for prediction

我們接下來針對單一的預測結果嘗試進行一些解讀

由單一預測成果可以看到各特徵對於產出結果的影響力
Flotation Column 03 Air Flow扮演重要腳色
我們可以再抽取另一個sample data 比較

Hyperparameter Tuning

在前面我們挑選了合適的模型、藉模型完成了個別因子對產出目標的解釋力後,我們將更進一步嘗試去優化模型
接下來將使用兩種手法來進行參數的調整並檢視模型成果

  1. 採用sklearn內建的參數優化方式
  2. 採用Optuna的參數優化方式

Sklearn

這是大家最耳熟能詳的ML模組,我們將使用GridSearchCV來進行測試
這邊要注意前面已經確認在深度為20左右比較不會發生overfit為前提下進行

Optuna

以結果而言,Optuna也能測出對於測試集一個較佳的模型結果
兩者結果相仿,但Optuna在計算上速度更快(44分鐘對比5分鐘的效率差異非常大)
以下是Optuna針對此Model可以進行的一些解釋

上圖是Optuna在訓練的trial次數增加下有向最佳目標收斂的視覺證明

藉由optuna的visualization tool我們可以看到超參數在嘗試下的行進方向
深度自然是朝向20前進,其他參數則不一定
下圖則是將其過程中因超參數變化對整個過程的影響重要度體現出來

Conclusion

本專案嘗試針對礦處理的輸入與輸出進行機器學習模型建模與分析,先檢視資料基本面,再來挑選合適的模型進行建模(為求速度本次不考慮訓練時間過長的模型),最後選中了決策樹模型對資料進行解釋
最後在看出相關模型的解釋性之後朝向模型本身優化的方向進行處理,使用了Sklearn基本的超參數優化方法與Optuna模組相互比較。
截至目前為止本模型可以應用所有的參數完成對目標的預測,但是於實際應用上可能還是有落差,因實務上參數分為可控與不可控;並非可以馬上找到最佳產出的參數。 後續可以再進行優化的方向有以下幾點:

由於本資料的情境不是那麼的common knowledge,在此專案中會較偏重如何實作改善模型的參數,至此感謝你的撥冗閱讀~